// 使用express中router中间件
let express = require("express");
// 1-创建一个路由中间件
let router = express.Router();

// 导入 Todo对象
let { Article } = require("../models/db");

//  / todos get请求--、
router.get("/", async function (req, res) {
  // 分页
  let pagenum = req.query.pagenum || 1;
  let pagesize = req.query.pagesize || 10;
  // 查询列表
  let resArr = await Article.find()
    // 排序
    .sort({ _id: -1 })
    // 分页
    .skip((pagenum - 1) * pagesize)
    .limit(pagesize)
    .populate("author", { username: 1, nickname: 1 }); //自动把 查询结果中 author从关联表中查出来 用户信息;
  res.json({ msg: "列表 todos", data: resArr });
});

router.get("/:id", async function (req, res) {
  // 跟todoid 查询星期
  let obj = await Article.findById(req.params.id);
  res.json({ msg: "列表 todos", data: obj });
});

//  / todos delete请求--、
// 根据id删除
router.delete("/:id", async function (req, res) {
  // 删除数据
  let r = await Article.findByIdAndDelete(req.params.id);
  res.json({ msg: "delete todos", code: 1 });
});
//  / todos patch请求--、

// 根据id修改
router.patch("/:id", async function (req, res) {
  //  await Todo.findByIdAndUpdate(req.params.id,{title:req.body.title,})
  //   req.body {title:'aa',completed:1}
  //   await Todo.findByIdAndUpdate(req.params.id, { ...req.body });
  await Article.findByIdAndUpdate(req.params.id, req.body);
  res.json({ msg: "patch todos" });
});

//  / todos post请求--、
router.post("/", async function (req, res) {
  //

  // jwt 解析成功---在请求里面 req上就会添加一个属性auth -保存 解析token 以后的信息
  // {
  //   username: 'zhngsan',
  //   uid: '6514e9a1e47c94e45db63f86',
  //   iat: 1695884596,
  //   exp: 1727420596
  // }
  console.log(req.auth);
  console.log(req.auth.uid);
  // await Article.create(req.body);
  // 把token中uid -登录用户的id，发布文本的作者，就当前的登录用户
  await Article.create({ ...req.body, author: req.auth.uid });
  // Todo 数据库中插入数据 create
  res.json({ msg: "post todos" });
});

// 3- 导出router中间件
module.exports = router;
